/*
*Copyright 2021-2023 NERCIS
*
*Licensed under the Apache License, Version 2.0 (the "License");
*you may not use this file except in compliance with the License.
*You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*Unless required by applicable law or agreed to in writing, software
*distributed under the License is distributed on an "AS IS" BASIS,
*WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*See the License for the specific language governing permissions and
*limitations under the License.
*/

package cn.ac.nercis.pes.model.dto.project;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;

/**
 * 系统测评基础信息类
 * @author zpy
 * @version 1.0.0
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SystemEvaluationDTO {
    /**
     * 系统测评基础信息ID
     */
    private String id;
    /**
     * 本次被测信息系统与等级保护定级系统是否一致
     */
    @Builder.Default
    private Boolean isChange = true;
    /**
     * 变化情况说明
     */
    private String changeDesc;

    /**
     * 状态（是否为关键信息基础设施）
     */
    private String ciiState;
    /**
     * 所属安全保护工作部门
     */
    private String ciiDesc;

    /**
     * 状态(网络安全等级保护测评情况)
     */
    private String gradeProtectionState;
    /**
     * 测评机构名称(网络安全等级保护测评情况)
     */
    private String evaluationUnitName;
    /**
     * 测评时间(网络安全等级保护测评情况)
     */
    private LocalDate evaluationDate;
    /**
     * 测评结论(网络安全等级保护测评情况)
     */
    private String conclusion;

    /**
     * 服务范围
     */
    private String serviceRange;
    /**
     * 跨省个数
     */
    private Integer interProvincialCount;
    /**
     * 跨地个数
     */
    private Integer interAreaCount;
    /**
     * 服务范围其他说明
     */
    private String serviceRangeDesc;
    /**
     * 服务领域
     */
    private String serviceScope;
    /**
     * 服务领域其他说明
     */
    private String serviceScopeDesc;
    /**
     * 服务对象
     */
    private String serviceObject;
    /**
     * 服务对象其他说明
     */
    private String serviceObjectDesc;

    /**
     * 覆盖范围
     */
    private String coverage;
    /**
     * 覆盖范围其他说明
     */
    private String coverageDesc;
    /**
     * 网络性质
     */
    private String networkNature;
    /**
     * 网络性质其他说明
     */
    private String networkNatureDesc;

    /**
     * 系统服务用户数量
     */
    private String serviceUserCount;
    /**
     * 系统是否已投入运行
     */
    @Builder.Default
    private Boolean isRunning = true;
    /**
     * 投入运行时间年
     */
    private String runYear;
    /**
     * 投入运行时间月
     */
    private String runMonth;
    /**
     * 目前情况
     */
    private String runDesc;

    /**
     * 系统互联情况
     */
    private String interconnection;
    /**
     * 系统互联情况其他说明
     */
    private String interconnectionDesc;
    /**
     * 互联系统名称
     */
    private String netName;

    /**
     * 状态（系统是否依赖不在本系统范围内的云平台运行）
     */
    private String cloudState;
    /**
     * 云平台名称
     */
    private String cloudName;
    /**
     * 云平台评估状态
     */
    private String cloudSelectState;
    /**
     * 密评机构名称
     */
    private String cloudUnit;
    /**
     * 评估时间
     */
    private LocalDate cloudDate;
    /**
     * 评估结论
     */
    private String cloudCon;

    /**
     * 系统是否具有密码应用方案
     */
    private String paScheme;
    /**
     * 评审通过时间
     */
    private LocalDate passDate;
    /**
     * 评审方式
     */
    private String paSchemeMethod;
    /**
     * 密评机构名称
     */
    private String paSchemeUnit;

    /**
     * 系统使用的密码产品情况
     */
    private String ppSituation;
    /**
     * 密码产品数量
     */
    private Integer ppSituationCount;
    /**
     * 独立使用数量
     */
    private Integer ppSituationIndependentCount;
    /**
     * 共享使用数量
     */
    private Integer ppSituationSharedCount;
    /**
     * 取得认证数量
     */
    private Integer ppSituationCertifiedCount;
    /**
     * 未取得认证数量
     */
    private Integer ppSituationUnCertifiedCount;
    /**
     * 国外产品数量
     */
    private Integer ppSituationForeignCount;

    /**
     * 分组算法
     */
    private String groupingAlgorithm;
    /**
     * 分组算法其他说明
     */
    private String groupingAlgorithmDesc;
    /**
     * 非对称算法
     */
    private String asymmetricAlgorithm;
    /**
     * 非对称算法其他说明
     */
    private String asymmetricAlgorithmDesc;
    /**
     * 杂凑算法
     */
    private String hashAlgorithm;
    /**
     * 杂凑算法其他说明
     */
    private String hashAlgorithmDesc;
    /**
     * 序列算法
     */
    private String sequenceAlgorithm;
    /**
     * 序列算法其他说明
     */
    private String sequenceAlgorithmDesc;
    /**
     * 其他算法说明
     */
    private String otherAlgorithmDesc;
}